#include <iostream>
using namespace std;

int N, tedge;
double Z, r, sum = 0;

struct EDGE
{
    int s, e;
    EDGE *next;
} edges[100005];

struct NODE
{
    EDGE *first;
    bool is_d = false;
    double d;
    double wl;
} nodes[100005];

void addedge(int s, int e)
{
    edges[tedge].s = s;
    edges[tedge].e = e;
    edges[tedge].next = nodes[s].first;
    nodes[s].first = &edges[tedge];
    tedge++;
}

void dfs(int id, double wl)
{
    NODE n = nodes[id];
    if (n.is_d)
    {
        sum += wl * n.d;
        return;
    }
    EDGE *ep = n.first;
    while (ep != NULL)
    {
        dfs(ep->e, wl * r);
        ep = ep->next;
    }
}

int main()
{
    cin >> N >> Z >> r;
    r = (100.0 - r) / 100.0;
    for (int i = 0; i < N; i++)
    {
        int cnt;
        cin >> cnt;
        if (!cnt)
        {
            // 得道者
            nodes[i].is_d = true;
            double d;
            cin >> d;
            nodes[i].d = d;
        }
        else
        {
            for (int j = 0; j < cnt; j++)
            {
                int child;
                cin >> child;
                addedge(i, child);
            }
        }
    }
    dfs(0, Z);
    cout << (int)sum;
    return 0;
}

// 以下测试点3出现段错误，暂时找不到原因，改用链表尝试

// #include <iostream>
// #include <vector>
// #include <map>
// using namespace std;

// class Child
// {
// public:
//     bool is_de = false; // 是否得道者
//     double d = 0;       // 得道者倍数
//     vector<int> cc;     // 子徒弟
// };

// double sum = 0;
// double z, r;
// bool vis[100005];
// map<int, Child> mc;

// void add(int id, double w)
// {
//     if (vis[id])
//     {
//         return;
//     }
//     vis[id] = true;
//     if (id)
//     {
//         //祖师爷id为0，不打折扣
//         w *= r;
//     }
//     if (mc[id].is_de)
//     {
//         sum += (w * (mc[id].d));
//     }
//     else
//     {
//         for (int i = 0; i < mc[id].cc.size(); i++)
//         {
//             add(mc[id].cc[i], w);
//         }
//     }
// }

// int main()
// {
//     int n = 0;
//     cin >> n >> z >> r;
//     r = (100.0 - r) / 100.0;
//     for (int i = 0; i < n; i++)
//     {
//         int cnt;
//         cin >> cnt;
//         if (!cnt)
//         {
//             // 得道者
//             double d;
//             cin >> d;
//             Child c;
//             c.is_de = true;
//             c.d = d;
//             mc[i] = c;
//         }
//         else
//         {
//             Child c;
//             c.is_de = false;
//             for (int j = 0; j < cnt; j++)
//             {
//                 int id;
//                 cin >> id;
//                 c.cc.push_back(id);
//             }
//             mc[i] = c;
//         }
//     }
//     if (mc[0].is_de)
//     {
//         // 祖师爷是得道者
//         cout << z * mc[0].d;
//     }
//     else
//     {
//         add(0, z);
//         cout << (int)sum;
//     }
//     return 0;
// }